package org.bonorsoft.modules.user.service;

import org.bonorsoft.common.system.vo.Ztree;
import org.bonorsoft.modules.user.entity.SysDepart;
import com.baomidou.mybatisplus.extension.service.IService;
import org.bonorsoft.modules.user.entity.SysRole;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @Description: 组织结构
 * @Author: WilliamYe
 * @Date:   2020-11-13
 * @Version: V1.0
 */
public interface ISysDepartService extends IService<SysDepart> {


    void deleteDepart(List<Integer> deptId);

    /**
     * 查询部门管理树
     *
     * @param dept 部门信息
     * @param req
     * @return 所有部门信息
     */
    public List<Ztree> selectDeptTree(SysDepart dept, HttpServletRequest req);


    /**
     * 查询SysDepart集合
     * @param userid
     * @return
     */
    public List<SysDepart> queryUserDeparts(String userid);

    /**
     * 根据角色ID查询部门（数据权限）
     *
     * @param role 角色对象
     * @param request
     * @return 部门列表（数据权限）
     */
    public List<Ztree> roleDeptTreeData(SysRole role, HttpServletRequest request);

    /**
     * 根据部门id获取部门信息
     * @param deptId
     * @return
     */
    public SysDepart getDepartNameById(Long deptId);

    /**
     * 查询部门人数
     *
     * @param parentId 父部门ID
     * @return 结果
     */
    public int selectDeptCount(Long parentId);

    /**
     * 查询部门是否存在用户
     *
     * @param deptId 部门ID
     * @return 结果 true 存在 false 不存在
     */
    public boolean checkDeptExistUser(Long deptId);

    /**
     * 校验部门名称是否唯一
     *
     * @param dept 部门信息
     * @return 结果
     */
    public String checkDeptNameUnique(SysDepart dept);

    /**
     * 重写添加逻辑
     * @param sysDepart
     * @return
     */
    boolean save(SysDepart sysDepart);

    /**
     * 修改部门信息
     * @param sysDepart
     */
    boolean updateDept(SysDepart sysDepart);
}
